// Symbol 是一个数据类型， 不是类， 不能使用关键字 new 。
const symbol = Symbol('fn1')
console.log(symbol instanceof Symbol) // 这里的symbol是false


// Symbol中， 如果描述 description是一个对象的话， 会使用这个对象的toString方法
const obj = {
    toString(){
        return '123'
    }
}

const symbol2 = Symbol(obj)
console.log(symbol2) // 如果symbol的description是一个对象， 会调用这个对象的toString方法


// 如果是传入的参数， 将会把参数的值放进description中
const a = '111'
console.log(a.toString())
const sSymbol = Symbol(a)
console.log(sSymbol)

// 如果想使用同一个参数， 那么就使用Symbol.for申明
const symbol3 = Symbol.for('foo')
const symbol4 = Symbol.for('foo')
console.log(symbol3 === symbol4) // true


const cache = {
    data:{}
}

const xiaoming = {
    key:Symbol('xiaoming'),
    value:20
}
const xiaohong = {
    key:Symbol('xiaohong'),
    value: 19
}
cache.data[xiaoming["key"]] = xiaoming.value

console.log(cache.data[xiaoming["key"]])

